#include "ipc/Ftok.h"
#include "ipc/Cola.h"
#include "tcp/MensajeroTCP.h"
#include "log.h"
#include <stdlib.h>
#include <unistd.h>

#include <vector>

int main(int argc, char* argv[]){

    if(argc < 3){
	log("%s <sock_fd> <id_conexion>\n", argv[0]);
	exit(-1);
    }

    int sockfd = atoi(argv[1]);
    if(sockfd <= 0){
	log("Error, el socket no puede ser %d\n", sockfd);
	exit(-1);
    }
    long id_conexion = atol(argv[2]);
    if(id_conexion == 0){
	log("Error, el numero de conexion no puede ser %ld\n", id_conexion);
	exit(-1);
    }


    MensajeroTCP mensajero(sockfd);
    
    char path_ftok[1024];
    char *path;
    path = ftok_crear_archivo("servidor", path_ftok, 1024);
    if(!path){
	log("Error, no se pudo obtener el path para FTOK.\n");
	exit(-1);
    }

    Cola cola(path, 2);

    std::vector<char> buffer;

    while(mensajero.recibirMensaje(buffer)){
	log("Recibo un mensaje del socket y lo pongo en la cola.\n");
	log("%s", &buffer[0]);
	mensajero.enviarMensaje(buffer);
	cola.enviar(id_conexion, buffer);
    }

    log("El receptor finaliza.\n");
    return 0;
}
